The present disclosure relates to the field of digital computer systems and, more specifically, to a method for verifying the functional correctness of a device driver.
The development of new computer hardware regularly requires a development of suitable device drivers. A reliable driver must be able to handle all possible exceptions that might occur when operating on real hardware. This is especially true for the Internet of Things (IoT), which is one of the most active fields where new controller drivers are currently being developed; but hardware development for computing centers, data warehouses, web services or other computer systems with a high network integration, where data loss or hardware failure have a strong and immediate economic impact, is affected likewise.
For this reason, developing a new computer device driver must also include thorough testing to obtain provisions for cases when the computer device handled by this driver is not functioning properly. This requires preparing the device into a malfunctioning or error state. While contemporary driver development has grown in efficiency by testing a new driver mainly on emulated hardware, having the driver under test react on a multitude of injected errors is still a time-consuming task. On one hand, a dedicated preparation of the device under test is necessary to have the error take effect as closely to a predetermined point in the command queue as possible, and on the other hand, the emulated computer hardware needs to get restarted for each injected error at a sufficiently early point before the injection point.